/** 
 * JPanel das die den Inhalt der Datenfelder eines Exemplars mit dem
 * entsprechenden Barcode zurueck gibt.
 * 
 * 
 * Datei: PanelgibExemplar.java        Autor: Simon Schindelmann 
 * Datum: 07.12.11                     Version: 0.1
 * 
 */
package medienverwaltung.simulation;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import personenverwaltung.Reservierung;
import medienverwaltung.DatumParser;
import medienverwaltung.EAN13;
import medienverwaltung.Exemplar;
import medienverwaltung.Mediumverwalter;

public class PanelgibExemplar extends JPanel
{
  private static final long serialVersionUID = -4908352834682138958L;
  //Speichert die aktuelle Sprache die verwendet wird.
  private Uebersetzung uebersetzung = Uebersetzung.gibSprache ();
  private JPanel panel1, panel2;
  private JLabel ean;
  private JTextField txt_ean;
  private JButton gibExemplar;
  private JTextArea text;

 /**
   * Das Layout wird gesetzt und die Labels, Textfelder und Buttons 
   * werden initialisiert und dem JPanel hinzugefuegt.
   */
  public PanelgibExemplar ()
  {
    init ();
    panel1.setLayout (new GridLayout (1, 3));
    panel2.setLayout (new GridLayout (1, 1));
    setLayout (new GridLayout (2, 1));
    add (panel1);
    add (panel2);
    panel1.add (ean);
    panel1.add (txt_ean);
    panel1.add (gibExemplar);
    panel2.add (new JScrollPane (text));
  }


  /**
   * Hier werden die Labels, Textfelder, Buttons und ActionListener 
   * initialisiert.
   */
  public void init ()
  {
    ean = new JLabel ("  "
        + uebersetzung.lokal.gibUebersetzung ("Barcode") + ": ");
    txt_ean = new JTextField ();
    gibExemplar = new JButton ("  "
        + uebersetzung.lokal.gibUebersetzung ("gib Exemplar"));
    text = new JTextArea ();
    text.setEditable (false);
    panel1 = new JPanel ();
    panel2 = new JPanel ();

    gibExemplar.addActionListener (new ActionListener ()
    {
      public void actionPerformed (ActionEvent e)
      {
        try
        {
          gibExemplar ();
        }
        catch (NullPointerException e1)
        {
          JOptionPane.showMessageDialog (null, uebersetzung.lokal
              .gibUebersetzung ("Dieses Exemplar existiert nicht"), ""
              + e1.getMessage (), JOptionPane.WARNING_MESSAGE);
        }
        catch (IllegalArgumentException e2)
        {
          JOptionPane.showMessageDialog (null, "" + uebersetzung.lokal
              .gibUebersetzung ("Ungueltige Zahl"), null, JOptionPane
              .WARNING_MESSAGE);
        }
      }
    });
  }


  /**
   * Gibt den inhalt der Datenfelder des Exemplars zurueuck
   */
  public void gibExemplar ()
  {
    Mediumverwalter mv = new Mediumverwalter ();
    EAN13 barcode;
    Exemplar e;
    ArrayList<Reservierung> rl;
    String standort, regalId, etagenNr, abschnittNr, mediumNr, 
    ausgeliehen, reserviert, gesperrt, bewertung, reservierungen, 
    ausleihe;

    if (txt_ean.getText ().isEmpty () == true)
    {
      txt_ean.setText (uebersetzung.lokal
          .gibUebersetzung ("Fehler Feld Barcode ist leer"));
    }
    else
    {
      barcode = new EAN13 ( (DatumParser.stringZuLong (txt_ean
          .getText ())));
      e = (mv.gibExemplar (barcode));
      standort = (e.gibStandort ().gibName ());
      regalId = " " + e.gibRegalId ();
      etagenNr = " " + e.gibEtage ();
      abschnittNr = "" + e.gibAbschnitt ();
      mediumNr = "" + e.gibMedium ().gibMediumId ();
      ausgeliehen = "" + e.istAusgeliehen ();
      reserviert = "" + e.istReserviert ();
      gesperrt = "" + e.istGesperrt ();
      bewertung = "" + e.gibBewertungen ();
      rl = e.gibReservierungen ();
      reservierungen = "";
      for (Reservierung r : rl)
      {
        reservierungen = reservierungen + " "
            + r.gibPerson ().gibVornamen () + " "
            + r.gibPerson ().gibNachname () + "\n";
      }
      ausleihe = "";
      if (e.gibAusleihe () != null)
      {
        ausleihe = e.gibAusleihe ().gibPerson ().gibVornamen () + " "
            + e.gibAusleihe ().gibPerson ().gibNachname ();
      }

      text.setText ("  "
          + uebersetzung.lokal.gibUebersetzung ("Standort") + ": "
          + standort + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("RegalId") + ": "
          + regalId + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("EtagenNr") + ": "
          + etagenNr + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("AbschnittNr") + ": "
          + abschnittNr + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("MediumNr") + ": "
          + mediumNr + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("Ausgeliehen") + ": "
          + ausgeliehen + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("Reserviert") + ": "
          + reserviert + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("Gesperrt") + ": "
          + gesperrt + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("bewertung") + ": "
          + bewertung + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("Reservierungen")
          + ": " + reservierungen + "\n" + "  "
          + uebersetzung.lokal.gibUebersetzung ("Ausgeliehen von")
          + ": " + ausleihe + "\n");
    }
  }
}
